home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr44 / newmat08.zip / TMT6.CPP < prev    next >
C/C++ Source or Header  |  1995-01-11  |  3KB  |  101 lines

  1.  
  2. //#define WANT_STREAM
  3.  
  4. #include "include.h"
  5.  
  6. #include "newmat.h"
  7.  
  8.  
  9. /**************************** test program ******************************/
  10.  
  11. void Print(const Matrix& X);
  12. void Print(const UpperTriangularMatrix& X);
  13. void Print(const DiagonalMatrix& X);
  14. void Print(const SymmetricMatrix& X);
  15. void Print(const LowerTriangularMatrix& X);
  16.  
  17. void trymat6()
  18. {
  19. //   cout << "\nSixth test of Matrix package\n";
  20.    Tracer et("Sixth test of Matrix package");
  21.    Exception::PrintTrace(TRUE);
  22.  
  23.    int i,j;
  24.  
  25.  
  26.    DiagonalMatrix D(6);
  27.    UpperTriangularMatrix U(6);
  28.    for (i=1;i<=6;i++) { for (j=i;j<=6;j++) U(i,j)=i*i*i-50; D(i,i)=i*i+i-10; }
  29.    LowerTriangularMatrix L=(U*3.0).t();
  30.    SymmetricMatrix S(6);
  31.    for (i=1;i<=6;i++) for (j=i;j<=6;j++) S(i,j)=i*i+2.0+j;
  32.    Matrix MD=D; Matrix ML=L; Matrix MU=U; Matrix MS=S;
  33.    Matrix M(6,6);
  34.    for (i=1;i<=6;i++) for (j=1;j<=6;j++) M(i,j)=i*j+i*i-10.0;  
  35.    {
  36.       Tracer et1("Stage 1");
  37.       Print(Matrix(MS+(-MS)));
  38.       Print(Matrix((S+M)-(MS+M)));
  39.       Print(Matrix((M+U)-(M+MU)));
  40.       Print(Matrix((M+L)-(M+ML)));
  41.    }
  42.    {
  43.       Tracer et1("Stage 2");
  44.       Print(Matrix((M+D)-(M+MD)));
  45.       Print(Matrix((U+D)-(MU+MD)));
  46.       Print(Matrix((D+L)-(ML+MD)));
  47.       Print(Matrix((-U+D)+MU-MD));
  48.       Print(Matrix((-L+D)+ML-MD));
  49.    }
  50.    {
  51.       Tracer et1("Stage 3 - concatenate");
  52.       RowVector A(5);
  53.       A << 1 << 2 << 3 << 4 << 5;
  54.       RowVector B(5);
  55.       B << 3 << 1 << 4 << 1 << 5;
  56.       Matrix C(3,5);
  57.       C <<  2 <<  3 <<  5 <<  7 << 11
  58.         << 13 << 17 << 19 << 23 << 29
  59.         << 31 << 37 << 41 << 43 << 47;
  60.       Matrix X1 = A & B & C;
  61.       Matrix X2 = (A.t() | B.t() | C.t()).t();
  62.       Matrix X3(5,5);
  63.       X3.Row(1)=A; X3.Row(2)=B; X3.Rows(3,5)=C;
  64.       Print(Matrix(X1-X2));
  65.       Print(Matrix(X1-X3));
  66.       LowerTriangularMatrix LT1; LT1 << (A & B & C);
  67.       UpperTriangularMatrix UT1; UT1 << (A.t() | B.t() | C.t());
  68.       Print(LowerTriangularMatrix(LT1-UT1.t()));
  69.       DiagonalMatrix D1; D1 << (A.t() | B.t() | C.t());
  70.       ColumnVector At = A.t();
  71.       ColumnVector Bt = B.t();
  72.       Matrix Ct = C.t();
  73.       LowerTriangularMatrix LT2; LT2 << (At | Bt | Ct);
  74.       UpperTriangularMatrix UT2; UT2 << (At.t() & Bt.t() & Ct.t());
  75.       Matrix ABt = At | Bt;
  76.       DiagonalMatrix D2; D2 << (ABt | Ct);
  77.       Print(LowerTriangularMatrix(LT2-UT2.t()));
  78.       Print(DiagonalMatrix(D1-D2));
  79.       Print(Matrix(LT1+UT2-D2-X1));
  80.       Matrix M1 = LT1 | UT2; Matrix M2 = UT1 & LT2;
  81.       Print(Matrix(M1-M2.t()));
  82.       M1 = UT2 | LT1; M2 = LT2 & UT1;
  83.       Print(Matrix(M1-M2.t()));
  84.       M1 = (LT1 | UT2) & (UT2 | LT1);
  85.       M2 = (UT1 & LT2) | (LT2 & UT1);
  86.       Print(Matrix(M1-M2.t()));
  87.       SymmetricMatrix SM1; SM1 << (M1 + M1.t());
  88.       SymmetricMatrix SM2; SM2 << ((SM1 | M1) & (M1.t() | SM1));
  89.       Matrix M3(20,20);
  90.       M3.SubMatrix(1,10,1,10) = SM1;
  91.       M3.SubMatrix(1,10,11,20) = M1;
  92.       M3.SubMatrix(11,20,1,10) = M2;
  93.       M3.SubMatrix(11,20,11,20) = SM1;
  94.       Print(Matrix(M3-SM2));
  95.    }
  96.  
  97.  
  98. //   cout << "\nEnd of sixth test\n";
  99. }
  100.  
  101.